package br.com.tccc.gp.testes;

import java.sql.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JOptionPane;

import br.com.tcc.gp.controlador.ControleDetento;
import br.com.tcc.gp.modelo.Advogado;
import br.com.tcc.gp.modelo.Cela;
import br.com.tcc.gp.modelo.Detento;
import br.com.tcc.gp.modelo.Endereco;
import br.com.tcc.gp.modelo.Processo;

public class TesteDetento {

	ControleDetento controle = new ControleDetento();
	List<Detento> lista ;
	String texto = "";
	int numero = 0 ;
	
	public TesteDetento(){
		lista = new ArrayList<Detento>();
		menu();
	}
	
	public void menu(){		
		String txt  = "Detento \n1 - Salvar \n2 - Pesquisar \n3 - Listar \n4 - Alterar \n5 - Deletar \n6 - Voltar ";		
		byte opcao =Byte.parseByte(JOptionPane.showInputDialog(txt));
		
		if(opcao == 1)
			salvar();		
		else if (opcao == 2)
			pesquisar();		
		else if(opcao == 3)
			listar();
		else if(opcao == 4)
			altera();
		else if(opcao == 5)
			deletar();
	
	}

	//Salvar Detento
	public void salvar() {	
		
		Detento detento = new Detento();
		detento.setCpf(JOptionPane.showInputDialog("Entre com CPF"));
		detento.setRg(JOptionPane.showInputDialog("Entre com RG"));
		detento.setNome(JOptionPane.showInputDialog("Entre com Nome"));
		detento.setSexo(JOptionPane.showInputDialog("Entre com Sexo"));
		
		SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); 		
		String dtEntrada =  "10/03/2008";
		String dtSaida = "06/08/2016"; 

		try {	
			
			Date dataEntreada =  new java.sql.Date(sdf.parse(dtEntrada).getTime());  
            Date dataSaida = new java.sql.Date(sdf.parse(dtSaida).getTime());  

			detento.setDataEntrada(dataEntreada);
			detento.setDatasaida(dataSaida);	
			
		} catch (ParseException e) {
			e.printStackTrace();
		}			
		
		Endereco endereco = new Endereco();
		endereco.setEndereco(JOptionPane.showInputDialog("Rua:"));
		endereco.setCidade(JOptionPane.showInputDialog("Cidade:"));
		endereco.setCep(JOptionPane.showInputDialog("Cep:"));
		endereco.setEmail(JOptionPane.showInputDialog("E-mail:"));
		endereco.setFone1(JOptionPane.showInputDialog("Fone:"));
		endereco.setFone2(JOptionPane.showInputDialog("Fone Recado:"));
		
		detento.setEndereco(endereco);
		
		Processo processo = new Processo();
		processo.setCodigo(Integer.parseInt(JOptionPane.showInputDialog("Codigo Processo:")));
		detento.setProcesso(processo);
		
		Advogado advogado = new Advogado();		
		advogado.setCodigo(Integer.parseInt(JOptionPane.showInputDialog("Codigo Advogado:")));
		detento.setAdvogado(advogado);
		
		Cela cela =  new Cela();
		cela.setCodigo(Integer.parseInt(JOptionPane.showInputDialog("Codigo Cela:")));
		detento.setCela(cela);
		
		numero = controle.salvar(detento, endereco);		
		if (numero > 0);
			JOptionPane.showMessageDialog(null,"Detento Salvo");
	}
	
	//Pesquisa
	public void pesquisar() {
		Detento det  = controle.pesquisar(JOptionPane.showInputDialog("Entre com RG ou CPF ou Nome:"));
		
		String texto = "Codigo "+ det.getCodigo() + 
				"\n Nome: "+ det.getNome()+
				"\n CPF: "+det.getCpf()+
				"\n RG: "+ det.getRg() +
				"\n Sexo: " +det.getSexo()+
				"\n data entrada: "+det.getDataEntrada() +
				"\n data saida: "+ det.getDatasaida()+
				"\n Historico: "+det.getHistorico()+
				"\n Processo: "+det.getProcesso().getCodigo()+
				"\n crime: "+det.getProcesso().getCrime()+
				"\n codigo Advogado: "+ det.getAdvogado().getCodigo()+
				"\n Endereco: "+ det.getEndereco().getCodigo()+
				"\n Rua: "+ det.getEndereco().getEndereco()+
				"\n Codigo Cela: "+ det.getCela().getCodigo();
		
		JOptionPane.showMessageDialog(null, texto);
	}
	
	private void altera() {		
		Detento det  = controle.pesquisar(JOptionPane.showInputDialog("Altere, entre com RG ou CPF ou Nome:"));
				
		Detento detento = new Detento();
		
		int cod = det.getCodigo();
		String cpf = det.getCpf();
		int codigoEnderco = det.getEndereco().getCodigo();
		System.out.println("Codigo: "+cod+" CPF:"+cpf);
		
		detento.setCodigo(cod);
		detento.setCpf(cpf);
		detento.setRg(JOptionPane.showInputDialog("Altere com RG"));
		detento.setNome(JOptionPane.showInputDialog("Altere com Nome"));
		detento.setSexo(JOptionPane.showInputDialog("Altere com Sexo"));
		
		SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); 
		 String dtEntrada = "10/03/2008";
		 String dtSaida = "06/08/2016"; 

		try { 


		Date dataEntreada = new java.sql.Date(sdf.parse(dtEntrada).getTime()); 
		Date dataSaida = new java.sql.Date(sdf.parse(dtSaida).getTime()); 

		detento.setDataEntrada(dataEntreada);
		 detento.setDatasaida(dataSaida); 

		 } catch (ParseException e) {
		 e.printStackTrace();
		 }
		
		
		Endereco endereco = new Endereco();
		endereco.setCodigo(codigoEnderco);
		endereco.setEndereco(JOptionPane.showInputDialog("Altere Rua:"));
		endereco.setCidade(JOptionPane.showInputDialog("Altere Cidade:"));
		endereco.setCep(JOptionPane.showInputDialog("Altere Cep:"));
		endereco.setEmail(JOptionPane.showInputDialog("Altere E-mail:"));
		endereco.setFone1(JOptionPane.showInputDialog("Altere Fone:"));
		endereco.setFone2(JOptionPane.showInputDialog("Altere Fone Recado:"));
		
		detento.setEndereco(endereco);
		
		Processo processo = new Processo();
		processo.setCodigo(Integer.parseInt(JOptionPane.showInputDialog("Altere Codigo Processo:")));
		detento.setProcesso(processo);
		
		Advogado advogado = new Advogado();		
		advogado.setCodigo(Integer.parseInt(JOptionPane.showInputDialog("Altere Codigo Advogado:")));
		detento.setAdvogado(advogado);
		
		Cela cela =  new Cela();
		cela.setCodigo(Integer.parseInt(JOptionPane.showInputDialog("Altere Codigo Cela:")));
		detento.setCela(cela);
		
		numero = controle.alterar(detento, endereco);		
		if (numero > 0);
			JOptionPane.showMessageDialog(null,"Detento Alterado");		
	}

	private void listar() {
		lista = controle.listar();			
		for (Detento det : lista) {
			numero++;
					texto ="Codigo: "+det.getCodigo() + 
					"\n Nome: "+ det.getNome()+
					"\n CPF: "+det.getCpf()+
					"\n RG: "+ det.getRg() +
					"\n Sexo: " +det.getSexo()+
					"\n data entrada: "+det.getDataEntrada() +
					"\n data saida: "+ det.getDatasaida()+
					"\n Historico: "+det.getHistorico()+
					"\n Processo: "+det.getProcesso().getCodigo()+
					"\n crime: "+det.getProcesso().getCrime()+
					"\n codigo Advogado: "+ det.getAdvogado().getCodigo()+
					"\n Endereco: "+det.getEndereco().getCodigo()+
					"\n Rua: "+ det.getEndereco().getEndereco()+
					"\n Codigo Cela: "+ det.getCela().getCodigo();	
					JOptionPane.showMessageDialog(null, texto);
		}
		
	}
	
	//Deleta
	public void deletar() {
		Detento det = controle.pesquisar(JOptionPane.showInputDialog("Para deletar entre com  CPF ou RG ou Nome"));		
		int linhas = controle.deletar(det);
		 if(linhas > 0  );
		 	JOptionPane.showMessageDialog(null,det.getNome()+ " Detento deletado");
		
	}
}